ReactNative(expo)のプロジェクトで、pod install時にエラー「Invalid Podfile
file: undefined method `exists?' for File:Class.」が起きるようになったので、対処法をまとめました。
エラー内容
$ (cd ios && pod install)
Using Expo modules
[Expo] Enabling modular headers for pod ExpoModulesCore
[!] Invalid `Podfile` file: undefined method `exists?' for File:Class.
# from /Users/hirasaki/work/DiFENDER/sources/bluebird-app/ios/Podfile:13
# -------------------------------------------
# target 'bluebirdapp' do
> use_expo_modules!
# config = use_native_modules!
# -------------------------------------------
$ yarn ios
yarn run v1.22.19
$ expo run:ios
⚠️ Something went wrong running `pod install` in the `ios` directory.
Command `pod install` failed.
└─ Cause: Invalid `Podfile` file: undefined method `exists?' for File:Class.
# from ~/myproject/ios/Podfile:13
# -------------------------------------------
# target 'bluebirdapp' do
> use_expo_modules!
# config = use_native_modules!
# -------------------------------------------
✨ Done in 2.70s.
原因
pod install fails with use_expo_modules! 調べてみたところ、こちらで議論がされてて、どうやらrubyのバージョンが違うみたいでした。
$ ruby -v
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin22]
$ gem -v
3.1.6
rubyのversionは3.1を使用するみたいです。 私はrbenvを使っているので、それを使ってrubyのアップデートを行いました。
対策
ruby@3.1をインストールして、localでプロジェクトのディレクトリに適用します。
$ rbenv install 3.1.3
$ rbenv local 3.1.3
$ ruby -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [arm64-darwin22]
$ gem -v
3.3.26
rubyのバージョンがあがったので、再度pod updateを試みます。
$ gem install cocoapods
$ npx pod-install
$ yarn ios